package string.leetcode;

/**
 * @author yuisama
 * @date 2023年07月04日 14:58
 * @description 字符串转整数
 */
public class Num8_MyAtoi {
    public int myAtoi(String s) {
        // 去除左右空格
        s = s.trim();
        // 边界判断1.字符串为空
        if (s.length() == 0) {
            return 0;
        }
        // 边界判断2.不是数字开头
        char c = s.charAt(0);
        // 符号位
        int flag = 1;
        int i = 1;
        if (c == '-') {
            flag = -1;
        }
        else if (c != '+') {
            // 只要首字符不是+，都从第一个字符开始处理
            i = 0;
        }
        // 转换后的数字，使用long防止溢出
        long res = 0;
        StringBuilder sb = new StringBuilder();
        // 遍历原来的字符串s的每个字符
        for (int j = i; j < s.length(); j++) {
            char val = s.charAt(j);
            if (val < '0' || val > '9') {
                // 非数字，跳出循环
                break;
            }
            res = res * 10 + (val - '0');
            if (res > Integer.MAX_VALUE) {
                if (flag == -1) {
                    return Integer.MIN_VALUE;
                }else {
                    return Integer.MAX_VALUE;
                }
            }
        }
        res = res * flag;
        return (int) res;
    }
}
